VBA提高篇

您所在的位置:网站首页 vba 打开指定文件 VBA提高篇

VBA提高篇

2024-07-07 02:09| 来源: 网络整理| 查看: 265

文章目录 一、VBA打开文本文件的4步操作二、文本输入Excel示例三、 Excel输出文本示例3.1 Open For Output3.2 Open For Append3.3 Print 打印文件3.4 工作簿 循环工作表 循环输出文件 四 、先输入后输出 Demo实战演练

一、VBA打开文本文件的4步操作

在这里插入图片描述

打开文本文件 找到指定文件并调入内存 打开指定文件 Open Open "文件详细路径" For Input/Output As #1 打开 指定文件 为了 输入 / 输出 代号 1 读取一行内容 将每行视作一个字符串 Line Input #1, s 读取一 输入 1号 作为字符串 行文本 文件 保存到s中

vba的顺序读写模式:

每执行一次Line input ,就自动向下读取新的一行,不能向回读取已经读取过的内容 Do While 尚未到达文件末尾 Line Input #1,s Cell(i,1) = s i = i + 1 Loop 是否已到末尾? 如果是末尾就不再读取 EOF 是 End of File 的缩写 EOF(n) = True/False 判断代号n是否读到了文件末尾 用逻辑变量做判断 False 可以直接写成Not EOF,True 直接写成Not EOF,具体看后边示例

4.关闭文件文件

保存文件,清理内存 Close #1 '不关闭文件,则之前写入的数据可能无法真正保存到该文件中 二、文本输入Excel示例 Sub readText() Open "D:\demo\客户信息.txt" For Input/Output As #1 i = 1 Do While Not EOF(1) '尚未到达文件末尾 Line Input #1,s If Left(s,2) ="北京" Then ' 判断以北京开头的每行操作/否则不操作 Cell(i,1) = s i = i + 1 End If Loop Close #1 End Sub 三、 Excel输出文本示例 3.1 Open For Output

打开指定文件并向其中写入数据 如果已经有同名文件,则将其内容全部清空覆盖 如果当前硬盘上没有这个文件,就新建此文件

3.2 Open For Append

打开指定文件并向其中 数据 如果已经有同名文件,则保留其内容,并写入 如果当前硬盘上没有这个文件,就新建此文件

3.3 Print 打印文件 Sub WriteText() Dim i As Integer Open "d:\部门名单-1.txt" For Output As #1 Print #1, Trim(Cells(3, 2)); '末尾有分号代表输出不换行 Print #1, Trim(Cells(3, 3)) '末尾空白代表输出默认换行 Print #1, Trim(Cells(4, 2)) Print #1, Trim(Cells(4, 3)) Close #1 '不关闭文件,则之前写入的数据可能无法真正保存到该文件中 End Sub 3.4 工作簿 循环工作表 循环输出文件 Sub writeTxt() Dim s As String, i As Long Dim w As Worksheet '打开指定文件(若无此文件则创建)。若已经存在该文件, '则之前内容全部清除。改为 For Append 可保留之前内容。 Open "d:\demo\部门名单汇总.txt" For Output As #1 '扫描每一张工作表 For Each w In Worksheets '每张工作表从第3行开始扫描每一行 i = 3 Do While Trim(w.Cells(i, 2)) "" '将每一行的B列和C列内容写入文本文件,中间用一个破折号隔开 '三个字符串之间是分号隔开,所以输出在同一行。而最后一个字符 '后面没有任何符号,所以下一次执行Print时将换行输出。 Print #1, w.Cells(i, 2); "--"; w.Cells(i, 3) i = i + 1 Loop Next w '关闭文件,非常重要!否则可能造成数据丢失! Close #1 End Sub 四 、先输入后输出 Demo实战演练 Sub readAndWrite() Dim s As String '1.0读取 '打开文件 Open "d:\残本1.txt" For Input As #1 Open "d:\残本2.txt" For Input As #2 i = 3 '读取文件 ' #1和 #2是否末尾 Do While Not EOF(1) Or Not EOF(2) If (i And 1) = 1 Then Line Input #1, s If (i And 1) = 0 Then Line Input #2, s Cells(i, 2) = s i = i + 1 Loop '关闭文件 Close #1, #2 '2.0写出 i = 3 Open "d:\残本3.txt" For Output As #3 Do While Cells(i, 2) "" s = Cells(i, 2).Value Print #3, s i = i + 1 Loop Close #3 End Sub


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3